import winim/lean
import winim/inc/winuser
import std/[times, os]
import std/random

var
  lis: array[0..1, string] = ["#签到", "#打卡"] 
  lis1: array[0..9, string] = ["鱼子酱", "大酱汤", "炒乌冬", "乌冬面", "醋饭", "鲷鱼烧", "拉面", "海鲜汤", "牛尾汤", "橙醋蟹"]
  # y = @[1, 2, 3, 4, 5, 6]
let wname1: LPCWSTR = L"Mozilla Firefox"
let winclass: LPCWSTR = L"MozillaCompositorWindowClass"
var
  dt = dateTime(1970, mJan, 01, 00, 00, 00, 00, utc())
  tm = dt.toTime() 
 
doAssert format(tm, "yyyy-MM-dd'T'HH:mm:ss", utc()) == "1970-01-01T00:00:00"

echo lis
echo lis1  
 
proc mykey_press_release_u() = 
  # key 1 : 0x31 or 49
  # key 2 : 0x32 or 50
  # key 3 : 0x33 or 51
  # ctrl  : 0x11 or 17
  # alt   : 0x12 or 18

  # 按下ctrl+v
  # win32api.keybd_event(0x11, 0, 0, 0)
  # win32api.keybd_event(0x56, 0, 0, 0)
  # win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
  # win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
  # time.sleep(1)
  # # 按下回车
  # win32api.keybd_event(0x0D, 0, 0, 0)
  # win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0)
  keybd_event(0x11, 0, 0, 0)
  keybd_event(0x31, 0, 0, 0)
  keybd_event(0x31, 0, KEYEVENTF_KEYUP, 0)
  keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0)

var 
  phw: HWND

var
  pointold: LPPOINT
  point: POINT
  wintitle: LPWSTR
  isOk: bool

var
  # content: seq[LPWSTR]
  pData, content: LPWSTR
  hData: HWND
  lpRect: LPRECT

# content = L"加油" & L","
content = lis[0]

hData = GlobalAlloc(GMEM_MOVEABLE, sizeof(content)+1)
pData = cast[LPWSTR](GlobalLock(hData))
lstrcpy(pData, content)
GlobalUnlock(hData)

point.x = 1347
point.y = 761

GetCursorPos(pointold)
sleep(4000)
mykey_press_release_u()
sleep(1000)
phw = WindowFromPoint(cast[POINT](pointold))

echo phw
if isOk:
  echo wintitle

ShowWindow(phw, SW_SHOW)
SetCursorPos(1347, 761)
# SetCursorPos(1347, 761) 
# 131424 0x000409E6

mouse_event(MOUSEEVENTF_LEFTDOWN, 1394, 764, 0, 0)
mouse_event(MOUSEEVENTF_LEFTUP, 1394, 764, 0, 0)
sleep(2000)

OpenClipboard(phw)
EmptyClipboard()
# CF_TEXT 
# SetClipboardData(CF_TEXT, hData)
# GetClipboardData(CF_TEXT)
SetClipboardData(CF_UNICODETEXT, hData)
GetClipboardData(CF_UNICODETEXT)
CloseClipboard()
SendMessage(phw, WM_PASTE, 0, 0)
sleep(1000)
# Ctrl+V
keybd_event(0x11, 0,0,0)
keybd_event(0x56, 0,0,0)
keybd_event(0x56, 0, KEYEVENTF_KEYUP,0)
keybd_event(0x11, 0, KEYEVENTF_KEYUP,0)
sleep(1000)
# Enter Key Press
keybd_event(VK_RETURN, 0,0,0)
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP,0)
# SendMessage(phw, WM_KEYDOWN, VK_RETURN, 0)
# SendMessage(phw, WM_KEYUP, VK_RETURN, 0)
sleep(1000)
for i in 0..7:
  content = lis1[rand(0..9)] & ","
  hData = GlobalAlloc(GMEM_MOVEABLE, sizeof(content)+1)
  pData = cast[LPWSTR](GlobalLock(hData))
  lstrcpy(pData, content)
  GlobalUnlock(hData)

  OpenClipboard(phw)
  EmptyClipboard()
  # CF_TEXT 
  # SetClipboardData(CF_TEXT, hData)
  # GetClipboardData(CF_TEXT)
  SetClipboardData(CF_UNICODETEXT, hData)
  GetClipboardData(CF_UNICODETEXT)
  CloseClipboard()
  SendMessage(phw, WM_PASTE, 0, 0)
  sleep(1000)
  # Ctrl+V
  keybd_event(0x11, 0,0,0)
  keybd_event(0x56, 0,0,0)
  keybd_event(0x56, 0, KEYEVENTF_KEYUP,0)
  keybd_event(0x11, 0, KEYEVENTF_KEYUP,0)
  sleep(1000)
  # Enter Key Press
  keybd_event(VK_RETURN, 0,0,0)
  keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP,0)
  # SendMessage(phw, WM_KEYDOWN, VK_RETURN, 0)
  # SendMessage(phw, WM_KEYUP, VK_RETURN, 0)
  sleep(6000)


